1. Field of Invention
The present invention pertains to the field of optimal resource allocation to applications. More particularly, this invention relates to resource allocation to application in data centers.
2. Art Background
A data center may be defined as a facility having a set of resources for supporting multiple applications. For example, a data center for supporting Internet applications typically includes a set of servers and network resources onto which a variety of Internet applications may be deployed.
The deployment of an application in a data center usually includes a process of resource allocation. Resource allocation typically involves identifying which of the resources of the data center are to be used by an application.
An application to be deployed in a data center is usually characterized by a set of application requirements. The application requirements usually include a desired arrangement of resources each having desired capabilities. For example, the application requirements of an Internet application may specify a desired arrangement of servers having desired performance characteristics and storage capacities and communication paths among the servers having desired bandwidth capacities.
A data center on the other hand is usually characterized by a given set of resources having given capabilities. For example, a data center for Internet applications usually has a given arrangement of servers each of which has given performance characteristics and storage capacities. In addition, the network elements in a data center usually have given communication bandwidth capacities.
As a consequence, the deployment of an application in a data center usually involves identifying which of the resources of the data center are to be allocated for use by the application so as to satisfy the application requirements given the capabilities of the data center. For example, the deployment of an Internet application in an Internet data center usually involves identifying which of the servers of the Internet data center are to be allocated to the Internet application so as to satisfy the performance requirements and communication bandwidth requirements of the Internet application.
Prior methods for resource allocation in a data center are usually based on manual techniques in which an individual such as a system administrator identifies the servers that are to be allocated to an application. Unfortunately, such manual methods are usually ineffective for deploying applications in large data centers. For example, an Internet data center may be extremely large having tens of thousands of servers for supporting extremely large numbers of Internet applications. Under such circumstances, it may be impossible for an individual to process the complexities and sheer volume of information involved in resource allocation.